package com.cw.DesignModel23.Behavioral.VisitorPattern.Visitor2;

import java.util.Iterator;

/**
 * 【接受访问的抽象类】
 * 这个类不需要实现accept方法，因为不是最终被访问的类
 */
public abstract class EntryElement implements Element {
    /**
     * 获取名字
     *
     * @return
     */
    public abstract String getName();

    /**
     * 获取大小
     *
     * @return
     */
    public abstract int getSize();

    /**
     * 增加目录条目
     *
     * @param entry
     * @return
     * @throws FileTreatmentException
     */
    public EntryElement add(EntryElement entry) throws FileTreatmentException {
        // 对 Directory 才有效，这里先简单报个错，让它自己重写一遍
        throw new FileTreatmentException();
    }

    /**
     * 生成Iterator
     *
     * @return
     * @throws FileTreatmentException
     */
    public Iterator iterator() throws FileTreatmentException {
        // 对 Directory 才有效，这里先简单报个错，让它自己重写一遍
        throw new FileTreatmentException();
    }

    /**
     * 显示字符串
     *
     * @return
     */
    public String toString() {
        return getName() + " (" + getSize() + ")";
    }
}
